<?php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

class Produit extends CI_Controller {

    public function __construct() {
        parent::__construct();
        $this->load->model('produit_model');
    }

    public function index() {
        $alerts = $this->produit_model->getAlerts();
        
        $produits = $this->db
                ->select('*')
                ->from('ARTICLE')
                ->where('ARTICLE_MATIERE_PREMIERE', false)
                ->get()
                ->result()
        ;

        $data['produits'] = $produits;
        $data['alerts'] = $alerts;

        $this->layout
                ->title('Produits')
                ->view('produit/index', $data);
    }

    public function edit($id = null) {
        $produits = $this->db
                ->select('*')
                ->from('ARTICLE')
                ->where('ARTICLE_ID', $id)
                ->where('ARTICLE_MATIERE_PREMIERE', false)
                ->get()
                ->result()
        ;

        $data['produit'] = array();

        $data['matPrem'] = $this->addMatPrem($id, false);

        if (count($produits) == 1)
            $data['produit'] = $produits[0];


        $this->load->view('produit/edit', $data);
    }

    public function addMatPrem($idProd = 0, $json = true) {
        $matsPremsSelected = array();
        $matsPremsSelected = $this->db
                ->select(array(
                    'CONSTITUER.ARTICLE_ID AS MATPREM_ID',
                    'NOMENCLATURE_QUANTITE',
                    'UNITE_CODE'
                ))
                ->from('ARTICLE')
                ->join('CONSTITUER', 'ARTICLE.ARTICLE_ID = CONSTITUER.ARTICLE_ID')
                ->join('NOMENCLATURE', 'NOMENCLATURE.NOMENCLATURE_ID = CONSTITUER.NOMENCLATURE_ID')
                ->join('UNITE_MESURE', 'UNITE_MESURE.UNITE_ID = ARTICLE.UNITE_ID')
                ->where('NOMENCLATURE.ARTICLE_ID', $idProd)
                ->get()
                ->result()
        ;

        $matsPrems = array();
        $matsPrems = $this->db
                ->select(array(
                    'ARTICLE_ID',
                    'ARTICLE_REF',
                    'ARTICLE_LIBELLE',
                ))
                ->from('ARTICLE')
                ->where('ARTICLE_MATIERE_PREMIERE', true)
                ->get()
                ->result()
        ;

        if ($json)
            echo $this->load->view('produit/showMatPrem', array('matPrems' => $matsPrems, 'matPremsSelected' => $matsPremsSelected), true);
        else
            return $this->load->view('produit/showMatPrem', array('matPrems' => $matsPrems, 'matPremsSelected' => $matsPremsSelected), true);
    }

    public function getMatPremUnit() {
        $idMatPrem = $this->input->post('idMatPrem');

        $unit = $this->db
                ->select('UNITE_CODE')
                ->from('unite')
                ->join('matiere_premiere', 'matiere_premiere.UNITE_ID = unite.UNITE_ID')
                ->where('matiere_premiere.ARTICLE_ID', $idMatPrem)
                ->get()
                ->result()
        ;

        if (count($unit) > 0)
            echo $unit[0]->UNITE_CODE;
        else
            echo '';
    }

    public function editProduit() {
        $idProduit = $this->input->post('idProd');
        $prodRef = $this->input->post('prodRef');
        $prodLibelle = $this->input->post('prodLibelle');
        $prodSeuil = $this->input->post('prodSeuil');
        $matPrems = $this->input->post('matPrems');

        $dataProd = array(
            'ARTICLE_REF' => $prodRef,
            'ARTICLE_LIBELLE' => $prodLibelle,
            'ARTICLE_SEUIL' => $prodSeuil,
            'ARTICLE_MATIERE_PREMIERE' => false
        );

        if ($idProduit != '' && $idProduit != '0')
            $this->db->where('ARTICLE_ID', $idProduit)->update('ARTICLE', $dataProd);
        else {
            $this->db->insert('ARTICLE', $dataProd);
            $idProduit = $this->db->insert_id();
        }

        $id = $this->db->select('NOMENCLATURE_ID')->from('NOMENCLATURE')->where('ARTICLE_ID', $idProduit)->get()->result();
        if (count($id) != 0) {
            $id = $id[0]->NOMENCLATURE_ID;

            $this->db->where('ARTICLE_ID', $id)->delete('CONSTITUER');
        } else {
            $dataNom = array(
                'ARTICLE_ID' => $idProduit
            );
            $this->db->insert('NOMENCLATURE', $dataNom);
            $id = $this->db->insert_id();
        }

        foreach ($matPrems as $mat) {
            if ($mat['idMatPrem'] != '0') {
                $dataNomenclature = array(
                    'ARTICLE_ID' => $mat['idMatPrem'],
                    'NOMENCLATURE_QUANTITE' => $mat['matPremQte'],
                    'NOMENCLATURE_ID' => $id
                );
                $this->db->insert('CONSTITUER', $dataNomenclature);
            }
        }

        echo json_encode(array('result' => 'success'));
    }

    public function delete($idProduit) {
        $this->db->where('ARTICLE_ID', $idProduit)->delete('nomenclature');
        $this->db->where('ARTICLE_ID', $idProduit)->delete('produit');
        echo json_encode(array('result' => 'success'));
    }

    public function generatePdf($idProduit) {
        $prod = $this->db->select('ARTICLE_REF, ARTICLE_LIBELLE')->from('ARTICLE')->where('ARTICLE_ID', $idProduit)->get()->result();
        $art = $prod[0];

        $ref = 'PRD-' . str_pad($idProduit, 6, '0', STR_PAD_LEFT);

        ob_start();
        $page = '
            <page format="A7" pageset="new" footer="date">
                <page_header> 
                    <div style="text-align:center;">
                        <barcode type="C39" value="' . $ref . '" label="label" style="width:100%; height:15mm; color: #000000; font-size: 20px"></barcode>
                    </div>             
                </page_header> 
                <div style="margin-top:35mm; text-align:center; font-size:20px;">
                    Reference :<br/>' . $art->ARTICLE_REF . '<br/><br/><br/>
                    Libelle :<br/> ' . $art->ARTICLE_LIBELLE . '
                </div>
            </page>';

        $content = '';
        $content .= $page;

        $this->load->library('htmlToPdf');
        $html2pdf = new HTML2PDF('P', 'A7', 'fr');
        //$html2pdf->setModeDebug();
        $html2pdf->WriteHTML($content);
        $html2pdf->Output('assets/youpi.pdf');
    }

}

?>